TOP

SQL GROUP BY

YouLibreCalc for Excel logo

SQL GROUP BY Descripción

La declaración GROUP BY agrupa filas con los mismos valores en filas de resumen, como "buscar la cantidad de clientes en cada país".

La instrucción GROUP BY se usa a menudo con funciones agregadas (COUNT(), MAX(), MIN(), SUM(), AVG()) para agrupar un conjunto de resultados por una o más columnas.


GROUP BY Sintaxis

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s)

Base de datos de demostración

El siguiente es un ejemplo de la tabla "Customers" ("Clientes") de la base de datos "Northwind":

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

SQL GROUP BY Ejemplos

La siguiente declaración SQL enumera la cantidad de clientes en cada país:

Run SQLSELECT COUNT(CustomerID), Country 
FROM Customers 
GROUP BY Country

La siguiente declaración SQL enumera los clientes de cada país, ordenados de mayor a menor:

Run SQLSELECT COUNT(CustomerID), Country 
FROM Customers 
GROUP BY Country 
ORDER BY COUNT(CustomerID) DESC

Base de datos de demostración

El siguiente es un ejemplo de la tabla "Orders" ("Pedidos") de la base de datos "Northwind":

ProductIDOrderIDCustomerIDEmployeeIDOrderDateShipperID
1102489051996-07-043
2102498161996-07-051
3102503441996-07-082
4102518431996-07-081
5102527641996-07-092

Y el ejemplo de la tabla "Shippers" ("Remitentes"):

ShipperIDShipperNamePhone
1Speedy Express(503) 555-9831
2United Package(503) 555-3199
3Federal Shipping(503) 555-9931

GROUP BY junto con JOIN Ejemplo

La siguiente declaración SQL enumera la cantidad de pedidos enviados por cada remitente:

Run SQLSELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders 
FROM Orders 
LEFT JOIN Shippers 
ON Orders.ShipperID = Shippers.ShipperID 
GROUP BY ShipperName